package com.cn.serverline.lineicp.produce.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.cn.serverline.lineicp.produce.entity.ProcessDescription;
import com.cn.serverline.lineicp.produce.entity.dto.*;
import com.cn.serverline.lineicp.produce.entity.vo.PartNumberVo;
import com.cn.serverline.lineicp.produce.entity.vo.ProcessStepVo;
import com.cn.serverline.lineicp.productionLine.entity.ProcessSteps;

import java.util.List;

/**
 * <p>
 * 生产执行工艺描述 服务类
 * </p>
 *
 * @author 王烁
 * @since 2024-08-12
 */
public interface IProcessDescriptionService extends IService<ProcessDescription> {
    /**
     * 保存生产任务
     *
     * @param saveAssemblyTaskDto
     */
    void savegetAssemblyTask(SaveAssemblyTaskDto saveAssemblyTaskDto);

    /***
     *  生产执行查询件号
     * @param automaticScheduleId
     * @return
     */
    List<PartNumberVo> getPartNumber(String automaticScheduleId);

    /**
     * 查询工艺描述
     *
     * @param automaticScheduleId
     * @return
     */
    List<ProcessSteps> getProcessDescription(String automaticScheduleId);

    /***
     * "生产执行 查询工步所需
     * @param tpdId
     * @return
     */
    List<ProcessStepVo> getProcessStepDetails(Long tpdId);

    /**
     * 获取生产执行描述ID
     *
     * @param processDescriptionId
     * @return
     */
    List<ProcessDescription> getProcessDescriptionId(ProcessDescriptionIdDto processDescriptionId);

    /**
     * 总装保存单件任务号
     *
     * @param updatePartNumberDto
     */
    void updatePartNumber(UpdatePartNumberDto updatePartNumberDto);

    /**
     * 向下工位流转
     *
     * @param updateStaterDto
     */
    void updateProcessSteps(UpdateStaterDto updateStaterDto);

    /***
     *工步设备、工具参数数据矫正
     * @param gatherDto
     * @return
     */
    void addGather(GatherDto gatherDto);

    /**
     * 生产执行 工步设备、工具参数数据矫正
     * @param correctionDto
     */
    void addCorrection(CorrectionDto correctionDto);
    /**
     * 编写工步组执行：报工、取消报工
     *
     * @param deskCirculation
     */
    void deskCirculation(DeskCirculationDto deskCirculation);

    /**
     * 总装绑定产品编号
     * @param bundleTheProductDto
     */
    void bundleTheProduct(List<BundleTheProductDto> bundleTheProductDto);

//    /**
//     *
//     * @param processDescriptionId
//     */
//    void updatePartNumber(List<Long> processDescriptionId);

    /**
     * 烘烤记录
     * @param roastRecords
     * @return
     */
    void roastRecords(RoastRecordsDto roastRecords);

    /**
     * 胶液记录
     * @param glueRecordingDto
     */
    void glueRecords(GlueRecordingDto glueRecordingDto);
}
